home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / misc / volume19 / crisp1.9 / patch01a / patch-cr < prev    next >
Encoding:
Text File  |  1991-04-30  |  40.2 KB  |  1,330 lines

  1. diff -c -r +new-files ../cr.orig/CRISP.Inst ./CRISP.Inst
  2. *** ../cr.orig/CRISP.Inst    Wed Mar 27 23:09:50 1991
  3. --- ./CRISP.Inst    Wed Mar 27 22:36:05 1991
  4. ***************
  5. *** 5,10 ****
  6. --- 5,21 ----
  7.   ##########################################################################
  8.   bin=/usr/local/bin    # Directory for binaries.
  9.   inst=/usr/local/crisp    # Directory for macros and help texts
  10. + echo "Binaries installation directory:  $bin"
  11. + echo "Libraries installation directory: $inst"
  12. + echo ""
  13. + echo "If this is wrong, abort this installation NOW and edit the"
  14. + echo "CRISP.Inst file."
  15. + echo "Pausing 10 seconds for you to press DEL to abort"
  16. + sleep 10
  17. + echo "Continuing installation..."
  18. + sed -e "/^# define INST_DIR/s;.*;# define INST_DIR \"$inst\";" \
  19. +     < src/crisp/crisp.h > /tmp/cinst.$$ && \
  20. +     mv /tmp/cinst.$$ src/crisp/crisp.h
  21.   ##########################################################################
  22.   #   Some drudgery before we get started.
  23.   ##########################################################################
  24. ***************
  25. *** 11,31 ****
  26.   version=1.9
  27.   ##########################################################################
  28.   #   Now unpack any .tar files
  29.   ##########################################################################
  30. ! for i in *.Z 
  31. ! do
  32. !     if [ -f $i ]; then
  33. !         echo Uncompressing $i
  34. !         uncompress $i
  35. !     fi
  36. ! done
  37. ! for i in *-sh*
  38. ! do
  39. !     if [ -f $i ]; then
  40. !         sh $i
  41. !         rm $i
  42. !     fi
  43. ! done
  44.   ##########################################################################
  45.   #   Try and deduce what system we are on.
  46.   #   If you are going to edit this because you are trying to make
  47. --- 22,43 ----
  48.   version=1.9
  49.   ##########################################################################
  50.   #   Now unpack any .tar files
  51. + #   (This never did work right anyway... - kew)
  52.   ##########################################################################
  53. ! #for i in *.Z 
  54. ! #do
  55. ! #    if [ -f $i ]; then
  56. ! #        echo Uncompressing $i
  57. ! #        uncompress $i
  58. ! #    fi
  59. ! #done
  60. ! #for i in *-sh*
  61. ! #do
  62. ! #    if [ -f $i ]; then
  63. ! #        sh $i
  64. ! #        rm $i
  65. ! #    fi
  66. ! #done
  67.   ##########################################################################
  68.   #   Try and deduce what system we are on.
  69.   #   If you are going to edit this because you are trying to make
  70. ***************
  71. *** 96,99 ****
  72. --- 108,113 ----
  73.   make cmac
  74.   echo "Installing Help files..."
  75.   make hmac
  76. + echo "Installing macro sources..."
  77. + make smac
  78.   echo Installation successfully completed.
  79. diff -c -r +new-files ../cr.orig/ChangeLog ./ChangeLog
  80. *** ../cr.orig/ChangeLog    Wed Mar 27 23:09:50 1991
  81. --- ./ChangeLog    Thu Mar 28 08:47:40 1991
  82. ***************
  83. *** 1,3 ****
  84. --- 1,57 ----
  85. + Changes since version 1.9
  86. + =========================
  87. + 1. Fixed bug in bookmark.c which cuased a lockup when trying to change
  88. +    to a bookmark in another window which was currently displayed.
  89. + 2. Fixed *another* bug in bookmark.c which caused the argv vector to
  90. +    get munged.
  91. + 3. Made code in spawn.c and pty.c more portable when using select().
  92. + 4. Revised crisp.m to look for and possibly create a $HOME/.crisprc.{m,cm}
  93. +    file which has all of the autoload's in it.  This makes crisp much
  94. +    more configurable.  Thanks to Berger Wathne for the idea.
  95. + 5. Fixed key assignmet in config.c that had F5/F6 goofed up.
  96. + 6. Fixed code ttyio.c that used scrolling regions.  The regions were not
  97. +    being reset properly cuasing many, many problems.
  98. + 7. You can now set the background color.
  99. + 8. Enhanced the compress intrinsic in math.c to allow for two spaces 
  100. +    after punctuation marks.  You pass the punctuation marks that you want
  101. +    to have two spaces after.  If none are passed, compress works as before.
  102. + 9. Made a m-aix.h file with Warren Jones' help.
  103. + 10. First pty looked for is ptyp0 instead of ptyq0.  This matches my system,
  104. +     and probably no others in the universe.  Let's figure out a good way
  105. +     to do this!
  106. + 11. check_if_died() changed to drain the pipe prior to cleanup.
  107. + 12. Added a global variable wait_status to correct a problem that would cause
  108. +     processes to not return the correct status.  I.e., (shell foo 1) would
  109. +     return a random value.
  110. + 13. Fixed a definition problem in splay/sptree.h that would cause GNU-C to
  111. +     complain.
  112. + 14. calc.m rewritten so it works.
  113. + 15. mail.m rewritten so it works.
  114. + 16. Added sccs.m that works with sccs much the same as Brief works with PVCS.
  115. + 17. Added a strange rcs.m that works with rcs, but trys to emulate the makedist
  116. +     package from lwall.  Needs work.
  117. + 18. Added cbox.m to draw comment boxes for you.
  118. + 19. Added zoom.m to zoom any window to full screen.  Cbox and zoom are both
  119. +     from Stig Jacobsen.
  120. + 20. Column marking/deleting/copying now work.
  121. + 21. compile.m changed to support GNU-C.
  122. + 22. _pipe macro now pipes the marked area into the command, and replaces the
  123. +     marked area on return.
  124. + 23. Support for .4gl and .C/.cc files.
  125. + 24. Lots more X support.
  126. + 25. autoindent now works correctly, not inserting only tabs, but whatever it
  127. +     needs to match the previous tab.
  128. + 26. Tab and Shift-Tab now move a block right/left by one tab.
  129. + 27. Modelines.m added to have commands in the text file that are executed just
  130. +     like vi's modeline feature.
  131. + 28. Wildcard pattern matching bug fixed that would return foo.c~ when only
  132. +     the *.c files were asked for.  This bug lay hidden because of a similar
  133. +     designe decision in select.m.
  134. + 29. spell now defaults to American spellings.
  135. + 30. AIX support.
  136. + 31. Better Sun support.
  137.   Known Bugs in V1.9
  138.   ==================
  139.   
  140. diff -c -r +new-files ../cr.orig/Makefile ./Makefile
  141. *** ../cr.orig/Makefile    Wed Mar 27 23:09:51 1991
  142. --- ./Makefile    Wed Mar 27 22:35:56 1991
  143. ***************
  144. *** 14,25 ****
  145.   #*    Version 1.25
  146.   #*
  147.   #**************************************************************/
  148.   OBJDIR    = obj
  149.   CFLAGS    = $(G)
  150.   TARGET    = cr
  151.   L    = lib
  152.   LIB1    = $(L)/libsptree.a $(L)/llist.a $(L)/foxlib.a 
  153. ! LIBS    = $(LIB1) $(MALLOC) $(SHLIB) 
  154.   SRCDIR    = sleepy:/usr/fox/crisp
  155.   INSTALL_DIR    = /usr/local/crisp
  156.   LDFLAGS    = 
  157. --- 14,28 ----
  158.   #*    Version 1.25
  159.   #*
  160.   #**************************************************************/
  161. + #
  162. + # You set G, OTHERLIBS and other variables in your machine's s-machine file.
  163. + #
  164.   OBJDIR    = obj
  165.   CFLAGS    = $(G)
  166.   TARGET    = cr
  167.   L    = lib
  168.   LIB1    = $(L)/libsptree.a $(L)/llist.a $(L)/foxlib.a 
  169. ! LIBS    = $(LIB1) $(MALLOC) $(SHLIB) $(OTHERLIBS)
  170.   SRCDIR    = sleepy:/usr/fox/crisp
  171.   INSTALL_DIR    = /usr/local/crisp
  172.   LDFLAGS    = 
  173. ***************
  174. *** 62,78 ****
  175.   __Foxlib:    $(L)/foxlib.a
  176.       touch __Foxlib
  177.   $(L)/foxlib.a:
  178. !     cd foxlib ; $(MAKE)
  179.   
  180.   __Llist:    $(L)/llist.a
  181.       touch __Llist
  182.   $(L)/llist.a:
  183. !     cd llist ; $(MAKE) 
  184.   
  185.   __Splay:    $(L)/libsptree.a
  186.       touch __Splay
  187.   $(L)/libsptree.a:
  188. !     cd splay ; $(MAKE) 
  189.   
  190.   clean:
  191.       -rm -f crisp.log
  192. --- 65,81 ----
  193.   __Foxlib:    $(L)/foxlib.a
  194.       touch __Foxlib
  195.   $(L)/foxlib.a:
  196. !     cd foxlib ; $(MAKE) "CFLAGS=$(CFLAGS)"
  197.   
  198.   __Llist:    $(L)/llist.a
  199.       touch __Llist
  200.   $(L)/llist.a:
  201. !     cd llist ; $(MAKE)  "CFLAGS=$(CFLAGS)"
  202.   
  203.   __Splay:    $(L)/libsptree.a
  204.       touch __Splay
  205.   $(L)/libsptree.a:
  206. !     cd splay ; $(MAKE)  "CFLAGS=$(CFLAGS)"
  207.   
  208.   clean:
  209.       -rm -f crisp.log
  210. ***************
  211. *** 79,88 ****
  212.       -rm -f obj/* lib/* a.out core
  213.       -rm -f *.o 
  214.       -rm -f */*.o
  215.       
  216.   $(TARGET):    $(OBJ) $(MARKER)
  217.       $(CC) $(LDFLAGS) $(CFLAGS) $(SEG) -o $(TARGET) $(OBJ) $(LIBS)
  218. -     sync
  219.       @echo "Finished making 'cr' executable."
  220.   
  221.   crisp.dist:
  222. --- 82,96 ----
  223.       -rm -f obj/* lib/* a.out core
  224.       -rm -f *.o 
  225.       -rm -f */*.o
  226. + realclean:    clean
  227. +     -rm -f $(MARKER)
  228. +     -rm -f cr cm
  229. +     -rm -f tags
  230. +     -rm -f s-machine m-machine.h
  231.       
  232.   $(TARGET):    $(OBJ) $(MARKER)
  233.       $(CC) $(LDFLAGS) $(CFLAGS) $(SEG) -o $(TARGET) $(OBJ) $(LIBS)
  234.       @echo "Finished making 'cr' executable."
  235.   
  236.   crisp.dist:
  237. ***************
  238. *** 261,266 ****
  239. --- 269,278 ----
  240.       -rm -rf /usr/local/crisp/help
  241.       -mkdir /usr/local/crisp/help
  242.       cd help/crisp ; tar cf - . | (cd /usr/local/crisp/help ; tar xvf - )
  243. + smac:
  244. +     -mkdir /usr/local/crisp/src
  245. +     cd src; tar cf - . | (cd /usr/local/crisp/src; tar xvf - )
  246.   
  247.   cm:    cm.c debug.c env.c keywd.c language.c ref_string.c system.c word.c
  248.       $(CC) $(CFLAGS) -DNOFUNCTIONS \
  249. diff -c -r +new-files ../cr.orig/README ./README
  250. *** ../cr.orig/README
  251. --- ./README    Wed Mar 27 17:03:33 1991
  252. ***************
  253. *** 0 ****
  254. --- 1,84 ----
  255. + This file is included in the Crisp v1.9 patch set as an explanation
  256. + and a greeting.
  257. + My name is Keith Walker.  I've been using Crisp/GRIEF since version
  258. + 1.5.  I like the editor and want to see it improve.  I've been writing
  259. + and collecting fixes to the C source and macros as well as new macro
  260. + files for quite a while now.  I want to share this with you.
  261. + Apply this patch to a pristine version of Crisp 1.9 and many, many
  262. + bugs will go away.  Some subtle, some no so subtle.  Macro files will
  263. + be added to your system as well as some changes to the way that crisp
  264. + operates.
  265. + Some of the changes that will make a chagne in the way you do business
  266. + with crisp:
  267. + 1. The crisp.m macro has changed considerably.
  268. +     All of the code in crisp.m that did the autoload stuff has
  269. +     been moved to a file in your home directory called
  270. +     "~/.crisprc.{m,cm}".  This makes it much easier to customize
  271. +     your particular version of crisp.  This is where you should
  272. +     do things like assign_to_key changes.  The first time that
  273. +     the new version of crisp fires up, you'll get a couple of
  274. +     messages telling you what it's doing.  After that you can
  275. +     find the crisprc files in your home directory.  They are
  276. +     copies of the "crisprc.m" file in the INST/src/crisp
  277. +     directory.  Modify to suit.  If crisp discovers that the
  278. +     ~/.crisprc.m file is newer than ~/crisprc.cm, then it will
  279. +     do the recompile automatically.
  280. + 2. The goto_bookmark intrinsic works now.
  281. +     Not much to say about this.  Goto_bookmark will now look for
  282. +     bookmarks in other windows, including windows that are
  283. +     currently displayed.
  284. + 3. Mail works
  285. +     This was somewhat brain damaged in the original version.  I
  286. +     understand that some Unixes keep the mail files writable
  287. +     only to the "mail" group.  Mail still won't work for you,
  288. +     unless you put some setgid() code in the system, which you
  289. +     probably don't want to do.
  290. + 4. Installation is a little smarter, but...
  291. +     I wanted to keep this patch set at something less than 1Meg.
  292. +     This meant refraining from gratuitous changes like C source
  293. +     formatting, extra comments, and unfortunately, too many
  294. +     changes to the installation procedures.  One major change
  295. +     that was actually put back in from previous versions of
  296. +     crisp was to copy the macro source directory to the install
  297. +     directory (usually /usr/local/crisp).  This keeps the
  298. +     sources in a convenient place for the sysadmin.
  299. + Keith Walker
  300. + North 8710 Kelly Court
  301. + Spokane, Washington  99208
  302. + +1 509 466 9284
  303. + kew@cims.com
  304. + ...uunet!{isc-br!tau-ceti,proto}!cims2!kew
  305. + p.s.
  306. + As I write this, I have heard that Paul Fox is once again on the scene
  307. + with a new version of crisp.  But then we heard that the version is
  308. + 1.1, then 2.1, then 1.1, then the e-mail address was bad, etc.  In
  309. + other words, we haven't got any verification of Paul's existance really.
  310. + I don't know what this will do to the current version of crisp.  The
  311. + new version (whatever the number) is "shareware" and costs about
  312. + $150.00 US, and you must pay before delivery.  This is a little
  313. + different than the "shareware" concept we have stateside.  To me it
  314. + basically means that Paul has gone commercial.
  315. + Just so you know my stance, I intend to keep improving the 1.9 version
  316. + whatever Paul has going, since I for one cannot justify $150 for an
  317. + editor when I already have one that works great.  I will continue to
  318. + share my work with others that want it.
  319. + This whole bit is subject to change, since I haven't heard directly
  320. + from Paul Fox, so take it all with a grain of salt.
  321. + --kew
  322. diff -c -r +new-files ../cr.orig/X.README ./X.README
  323. *** ../cr.orig/X.README
  324. --- ./X.README    Wed Mar 27 16:28:56 1991
  325. ***************
  326. *** 0 ****
  327. --- 1,80 ----
  328. + [This letter came along with some changes from rohit@dmdev.uucp
  329. + (aka Rohit Mehrotra).  Since your maintainer knows nothing of X,
  330. + you'll have to figure out what goes on yourself.  Sorry.  Maybe
  331. + someday, my machine will grow up and I'll get X. 
  332. + Also, your maintainer has a Missed-Em Five machine so the file
  333. + is *not* named "xcrisp.xdefaults", it's named "xcrisp.xdefaul".
  334. + (yeah, go ahead, laugh! Ha-Ha.)
  335. + -- kew ]
  336. + Hi,
  337. + Crisp can map any escape sequence emitted by a key stroke to any
  338. + of its macros. This mapping is defined in a terminal driver. There
  339. + are two terminal drivers for crisp on X.
  340. + Both these drivers are essentially similar to an extent that both of
  341. + them:
  342. +   1) try to tell crisp as to what escape sequences are emitted by
  343. +      which keystrokes,
  344. +   2) try to map these keystrokes to different crisp macros.    
  345. + If you find that any of them is not correct then go ahead and
  346. + modify them accordingly.
  347. + If for some reason your keyboard is not emitting the escape sequences
  348. + i.e. Alt-A or Meta-A emit the character "a" then crisp can really not 
  349. + do much about it. If you know of a way to get your keyboard to emit
  350. + different escape sequences for different Shifted/Alted keystrokes
  351. + then just change the escape sequences being mapped and you should
  352. + be all set to go. I have heard that you can map any keystroke to any
  353. + escape sequences in X. Well there is your chance to prove it (:-.
  354. + If you can not do it and insist on using crisp under X then try to 
  355. + use the terminal driver sun4.m which maps just about most of the 
  356. + crisp macros to the CTRL-keys. However uptil now I have not been 
  357. + able to make the KeyPad + / - emit any escape sequences in
  358. + Openwindows on Sun.
  359. + Files for the two drivers are:
  360. + 1)     src/crisp/tty/xterm.m
  361. +     and src/crisp/kbd/xterm.m
  362. + 2)     src/crisp/tty/xcrisp.m
  363. +     and src/crisp/tty/xcrisp.m
  364. +     and xcrisp.xdefaults
  365. + The driver xterm.m came along with version 1.9 and has been modified
  366. + by me a little. This driver assumes that your keyboard is emitting
  367. + the escape sequences that are defined in it. There is a capability
  368. + to choose between sun mappings or VT100 mappings. I HAVE NOT REALLY
  369. + TESTED THEM FULLY AS I PERSONALLY USE THE xcrisp macro/approach. 
  370. + UNCOMMENT THE LINES THAT YOU WOULD CHOOSE. This driver requires some
  371. + some modifications in a sense that you might have to change the escape
  372. + sequences associated with the various keys to the one that are emitted
  373. + by your keyboard.
  374. + In driver xcrisp different set of key mappings are defined, we
  375. + are trying to standardize things. In order to make the keyboard emit
  376. + the escape sequences mapped in xcrisp.m start crisp/xterm window as
  377. + follows:
  378. +        xterm -name xcrisp -e "cr"
  379. +                or
  380. +        xterm -name xcrisp        
  381. + Add the lines in the file called tty/xcr.xdefault to your .Xdefaults,
  382. + or wherever you xterm will find them. These lines have to correspond
  383. + to the kbd and tty files.
  384. + I WANT TO STANDARDIZE THESE THINGS SO THAT THEY ARE NOT TOO SUN-SPECIFIC.
  385. + The driver xcrisp works fine on my system: SunOS4.1.1 / SunSparc
  386. + LET ME KNOW WHAT YOU DO. IF YOU ENHANCE THIS IN ANY WAY, HAVE PROBLEMS, ETC.
  387. + [ Well, that's it.  If you do help out, please send your changes
  388. +   to me at kew@cims.com --kew]
  389. diff -c -r +new-files ../cr.orig/bookmark.c ./bookmark.c
  390. *** ../cr.orig/bookmark.c    Wed Mar 27 23:10:07 1991
  391. --- ./bookmark.c    Wed Mar 27 16:16:40 1991
  392. ***************
  393. *** 55,65 ****
  394. --- 55,75 ----
  395.       struct bookmark *bk;
  396.       int    move = TRUE;
  397.       long    book_no;
  398. +     int    i;                        /* kew */
  399. +     LISTV    tmp_args[5];                    /* kew */
  400.   
  401. +     /* save all used args */                /* kew */
  402. +     for (i = 1; i <= 4; i++)                /* kew */
  403. +         tmp_args[i] = argv[i];                /* kew */
  404.       accumulator = 0;
  405.       if (get_iarg1("Go to bookmark [1-10]: ", &book_no))
  406.           return 0;
  407.   
  408. +     /* restore the args */                    /* kew */
  409. +     for (i = 1; i <= 4; i++)                    /* kew */
  410. +         argv[i] = tmp_args[i];                    /* kew */
  411.       if (book_no == 0)
  412.           book_no = 10;
  413.       if (book_no < 1 || book_no > MAX_BOOKMARKS) {
  414. ***************
  415. *** 85,91 ****
  416.   
  417.       if (move) {
  418.           WINDOW    *wp;
  419. !         for (wp = wheadp; wp; wp->w_wndp)
  420.               if (wp->w_bufp->b_bufnum == bk->b_buffer)
  421.                   break;
  422.           if (wp == NULL) {
  423. --- 95,101 ----
  424.   
  425.       if (move) {
  426.           WINDOW    *wp;
  427. !         for (wp = wheadp; wp; wp = wp->w_wndp)        /* kew */
  428.               if (wp->w_bufp->b_bufnum == bk->b_buffer)
  429.                   break;
  430.           if (wp == NULL) {
  431. ***************
  432. *** 103,108 ****
  433. --- 113,119 ----
  434.               }
  435.           argv[1].l_int = bk->b_line;
  436.           argv[2].l_int = bk->b_col;
  437. +         set_hooked();                    /* kew */
  438.           move_abs();
  439.           }
  440.       accumulator = 1;
  441. diff -c -r +new-files ../cr.orig/config.c ./config.c
  442. *** ../cr.orig/config.c    Wed Mar 27 23:10:12 1991
  443. --- ./config.c    Wed Mar 27 16:16:55 1991
  444. ***************
  445. *** 65,72 ****
  446.           F2,        "move_edge",
  447.           F3,        "create_edge",
  448.           F4,        "delete_edge",
  449. !         F5,        "search_fwd",
  450. !         F6,        "translate",
  451.           F7,        "remember",
  452.           F8,        "playback",
  453.           F9,        "load_macro",
  454. --- 65,72 ----
  455.           F2,        "move_edge",
  456.           F3,        "create_edge",
  457.           F4,        "delete_edge",
  458. !         F5,        "search-fwd",            /* kew */
  459. !         F6,        "translate-fwd",        /* kew */
  460.           F7,        "remember",
  461.           F8,        "playback",
  462.           F9,        "load_macro",
  463. diff -c -r +new-files ../cr.orig/display.c ./display.c
  464. *** ../cr.orig/display.c    Wed Mar 27 23:10:14 1991
  465. --- ./display.c    Wed Mar 27 21:53:57 1991
  466. ***************
  467. *** 151,160 ****
  468.   void
  469.   vttidy() 
  470.   {
  471.       ttmove(nrow-1, (u_int16) 0);
  472.       ttputc(FG(col_table.c_normal));
  473.       tteeol();
  474. -     tttidy();
  475.       ttflush();
  476.       ttclose();
  477.   }
  478. --- 151,160 ----
  479.   void
  480.   vttidy() 
  481.   {
  482. +     tttidy();
  483.       ttmove(nrow-1, (u_int16) 0);
  484.       ttputc(FG(col_table.c_normal));
  485.       tteeol();
  486.       ttflush();
  487.       ttclose();
  488.   }
  489. ***************
  490. *** 816,822 ****
  491.   void
  492.   vtputl(lp)
  493.   register LINE    *lp;
  494. ! {    int    attr = FG(col_table.c_normal);
  495.       u_int16    ch;
  496.       register u_int16    col = ncol;
  497.       register u_char *cp = lp->l_text;
  498. --- 816,822 ----
  499.   void
  500.   vtputl(lp)
  501.   register LINE    *lp;
  502. ! {    int    attr = FG(col_table.c_normal) | BG(col_table.c_background);    /* kew */
  503.       u_int16    ch;
  504.       register u_int16    col = ncol;
  505.       register u_char *cp = lp->l_text;
  506. diff -c -r +new-files ../cr.orig/foxlib/chk_alloc.c ./foxlib/chk_alloc.c
  507. *** ../cr.orig/foxlib/chk_alloc.c    Wed Mar 27 23:08:33 1991
  508. --- ./foxlib/chk_alloc.c    Wed Mar 27 17:04:37 1991
  509. ***************
  510. *** 222,228 ****
  511.   # define    MMU_PAGESIZE    (3 * 8192)/* Must be at least as big as   */
  512.                       /* real MMU page size.        */
  513.   # define    NEXT(vp)    ((VM *) ((char *) vp + size))
  514. ! # define    NULL    0
  515.   
  516.   typedef struct VM {
  517.           struct VM *next;
  518. --- 222,230 ----
  519.   # define    MMU_PAGESIZE    (3 * 8192)/* Must be at least as big as   */
  520.                       /* real MMU page size.        */
  521.   # define    NEXT(vp)    ((VM *) ((char *) vp + size))
  522. ! # if !defined(NULL)
  523. ! #   define    NULL    0
  524. ! # endif
  525.   
  526.   typedef struct VM {
  527.           struct VM *next;
  528. diff -c -r +new-files ../cr.orig/gdir.h ./gdir.h
  529. *** ../cr.orig/gdir.h    Wed Mar 27 23:09:56 1991
  530. --- ./gdir.h    Wed Mar 27 19:21:51 1991
  531. ***************
  532. *** 9,15 ****
  533.   #        undef    DIRSIZ
  534.   #    endif
  535.   #    define    DIRSIZ    MAXNAMLEN
  536. ! #    define    dirent direct
  537.   # else
  538.   #     include    <dirent.h>
  539.   # endif
  540. --- 9,17 ----
  541.   #        undef    DIRSIZ
  542.   #    endif
  543.   #    define    DIRSIZ    MAXNAMLEN
  544. ! #   if !defined(_AIX)                                            /* kew */
  545. ! #      define    dirent direct
  546. ! #   endif
  547.   # else
  548.   #     include    <dirent.h>
  549.   # endif
  550. diff -c -r +new-files ../cr.orig/keywd.c ./keywd.c
  551. *** ../cr.orig/keywd.c    Wed Mar 27 23:10:19 1991
  552. --- ./keywd.c    Wed Mar 27 16:17:23 1991
  553. ***************
  554. *** 146,152 ****
  555.   MACRO3("change_window",        change_window,    "*i"),/* Window */
  556.   MACRO3("color",            color,        "*i*i*i*i*i*i"),/* Screen */
  557.   MACRO3("command_list",        command_list,    ""),/* List */
  558. ! MACRO3("compress",        compress,    "s"),/* String */
  559.   MACRO3("connect",        do_connect,    "*i*s"),/* Proc */
  560.   MACRO3("continue",        do_continue,    ""),/* Macro */
  561.   MACRO3("copy",            copy,        "*i"),/* Scrap */
  562. --- 146,152 ----
  563.   MACRO3("change_window",        change_window,    "*i"),/* Window */
  564.   MACRO3("color",            color,        "*i*i*i*i*i*i"),/* Screen */
  565.   MACRO3("command_list",        command_list,    ""),/* List */
  566. ! MACRO3("compress",        compress,    "s*s"),/* String */    /* kew */
  567.   MACRO3("connect",        do_connect,    "*i*s"),/* Proc */
  568.   MACRO3("continue",        do_continue,    ""),/* Macro */
  569.   MACRO3("copy",            copy,        "*i"),/* Scrap */
  570. diff -c -r +new-files ../cr.orig/m-aix.h ./m-aix.h
  571. *** ../cr.orig/m-aix.h
  572. --- ./m-aix.h    Thu Mar 28 08:49:23 1991
  573. ***************
  574. *** 0 ****
  575. --- 1,88 ----
  576. + /************************************************************************
  577. +  *                                                                      *
  578. +  *        CRISP - Custom Reduced Instruction Set Programmers Editor     *
  579. +  *                                                                      *
  580. +  *        (C) Paul Fox, 1989                                            *
  581. +  *        43, Jerome Close              Tel: +44 6284 4222              *
  582. +  *            Marlow                                                    *
  583. +  *             Bucks.                                                   *
  584. +  *                England SL7 1TX                                       *
  585. +  *                                                                      *
  586. +  *                                                                      *
  587. +  *    Please See COPYRIGHT notice.                                      *
  588. +  *                                                                      *
  589. +  *    This file is supposed to be for AIX, but your maintainer          *
  590. +  *    knows nothing of AIX, so you need to edit this.                   *
  591. +  *                                                                      *
  592. +  ************************************************************************/
  593. +     /*------------------------------------------------------------*/
  594. +     /* "I changed this to help with some changes by Warren Jones" */
  595. +     /* "Please let me know if they do the trick.  Mail to:"          */
  596. +     /* "kew@cims.com"                                              */
  597. +     /*------------------------------------------------------------*/
  598. + /************************************************************************
  599. +  *    One  of  the  following should be set to indicate machine type.    *
  600. +  *    Some  of  the  definitions  may  apply to more than one machine    *
  601. +  *    type,  eg  SUN may be more indicative of BSD, but I dont have a    *
  602. +  *    generic BSD to try this out on.                    *
  603. +  ************************************************************************/
  604. + # define    SUN            /* this is about the closest, I think -- kew */
  605. + /*# define    SYSV*/
  606. + /*#define    VMS*/
  607. + /************************************************************************
  608. +  *    Some  combination  of  the  following  may  need  to be set for    *
  609. +  *    operating  system  dependent  features which dont fit under the    *
  610. +  *    general category of operating system features.            *
  611. +  ************************************************************************/
  612. + # define    BSD
  613. + /*# define    XENIX*/
  614. + /************************************************************************
  615. +  *    DIRSIZ_DEFINED  should  be  define'd  if  the  POSIX  directory    *
  616. +  *    access include files are wrong. (Are they wrong or right ?)    *
  617. +  ************************************************************************/
  618. + # define    DIRSIZ_DEFINED
  619. + /*#undef    DIRSIZ_DEFINED*/
  620. + /************************************************************************
  621. +  *    The  following  # define is used to control the use of the enum    *
  622. +  *    OPCODE   typedef  in  the  list.h. It doesn't matter if you set    *
  623. +  *    this  to  'int'  as  below,  but  if it is undefined then it is    *
  624. +  *    easier  to  debug  the  CRISP lisp-code. Older Unix C compilers    *
  625. +  *    do  not  treat  enum's  and  int's  as  the  same type and will    *
  626. +  *    complain during compilation.                    *
  627. +  ************************************************************************/
  628. + # define        OPCODE        int
  629. + /*#undef OPCODE */
  630. + /************************************************************************
  631. +  *    If  you  have  support  for  pty's  in your kernel, then define    *
  632. +  *    HAVE_PTY.  If  not  #undef it, and normal unnamed pipes will be    *
  633. +  *    used instead.                            *
  634. +  ************************************************************************/
  635. + # undef        HAVE_PTY
  636. + # define       HAVE_PTY
  637. + /************************************************************************
  638. +  *    SELECT  should  be  defined  if  we  can  do  a select() on the    *
  639. +  *    keyboard  and  on the process pty's/pipes. This will tend to be    *
  640. +  *    true   on   BSD  systems,  and  Sys  V.4.  Alas,  poll()  isn't    *
  641. +  *    generally  applicable  on V.3 because the standard pipe and tty    *
  642. +  *    drivers are streams modules.                    *
  643. +  ************************************************************************/
  644. + # undef        SELECT
  645. + # define    SELECT
  646. + /************************************************************************
  647. +  *    CRISP  defines  a typedef called u_char. Some Unix systems also    *
  648. +  *    define   this   type   in   one  of  the  system  header  files    *
  649. +  *    (/usr/include/sys/types.h)  which  causes  a compilation error.    *
  650. +  *    If  you  have  this  typedef  in  your system header file, then    *
  651. +  *    #define U_CHAR. Otherwise undefine it.                *
  652. +  ************************************************************************/
  653. + /*#undef        U_CHAR*/
  654. + # define        U_CHAR
  655. diff -c -r +new-files ../cr.orig/m-sun3os3.h ./m-sun3os3.h
  656. *** ../cr.orig/m-sun3os3.h    Wed Mar 27 23:10:54 1991
  657. --- ./m-sun3os3.h    Thu Mar 28 08:49:23 1991
  658. ***************
  659. *** 84,89 ****
  660.    ************************************************************************/
  661.   /*#undef        U_CHAR*/
  662.   # define        U_CHAR
  663. --- 84,86 ----
  664. diff -c -r +new-files ../cr.orig/m-sun3os4.h ./m-sun3os4.h
  665. *** ../cr.orig/m-sun3os4.h    Wed Mar 27 23:10:54 1991
  666. --- ./m-sun3os4.h    Thu Mar 28 08:49:23 1991
  667. ***************
  668. *** 84,88 ****
  669.   /*#undef        U_CHAR*/
  670.   # define        U_CHAR
  671.   
  672. --- 84,86 ----
  673. diff -c -r +new-files ../cr.orig/m-sysv.h ./m-sysv.h
  674. *** ../cr.orig/m-sysv.h    Wed Mar 27 23:10:55 1991
  675. --- ./m-sysv.h    Thu Mar 28 08:49:23 1991
  676. ***************
  677. *** 83,87 ****
  678.   #undef        U_CHAR
  679.   /*# define        U_CHAR*/
  680.   
  681. --- 83,85 ----
  682. diff -c -r +new-files ../cr.orig/m-sysv3.2.h ./m-sysv3.2.h
  683. *** ../cr.orig/m-sysv3.2.h    Wed Mar 27 23:10:55 1991
  684. --- ./m-sysv3.2.h    Thu Mar 28 08:49:23 1991
  685. ***************
  686. *** 89,92 ****
  687.   # define    EGA43
  688.   /* #undef    EGA43*/
  689.   
  690. --- 89,91 ----
  691. diff -c -r +new-files ../cr.orig/m-vms.h ./m-vms.h
  692. *** ../cr.orig/m-vms.h    Wed Mar 27 23:10:57 1991
  693. --- ./m-vms.h    Thu Mar 28 08:49:23 1991
  694. ***************
  695. *** 86,90 ****
  696.    ************************************************************************/
  697.   /*# define        U_CHAR*/
  698.   
  699. --- 86,88 ----
  700. diff -c -r +new-files ../cr.orig/m-xenix.h ./m-xenix.h
  701. *** ../cr.orig/m-xenix.h    Wed Mar 27 23:10:57 1991
  702. --- ./m-xenix.h    Thu Mar 28 08:49:24 1991
  703. ***************
  704. *** 33,39 ****
  705.    *    general category of operating system features.            *
  706.    ************************************************************************/
  707.   /*# define    BSD*/
  708. ! /*# define    XENIX*/
  709.   
  710.   /************************************************************************
  711.    *    DIRSIZ_DEFINED  should  be  define'd  if  the  POSIX  directory    *
  712. --- 33,39 ----
  713.    *    general category of operating system features.            *
  714.    ************************************************************************/
  715.   /*# define    BSD*/
  716. ! # define    XENIX
  717.   
  718.   /************************************************************************
  719.    *    DIRSIZ_DEFINED  should  be  define'd  if  the  POSIX  directory    *
  720. ***************
  721. *** 60,66 ****
  722.    *    used instead.                            *
  723.    ************************************************************************/
  724.   # undef        HAVE_PTY
  725. ! /*# define        HAVE_PTY*/
  726.   
  727.   /************************************************************************
  728.    *    SELECT  should  be  defined  if  we  can  do  a select() on the    *
  729. --- 60,66 ----
  730.    *    used instead.                            *
  731.    ************************************************************************/
  732.   # undef        HAVE_PTY
  733. ! # define       HAVE_PTY
  734.   
  735.   /************************************************************************
  736.    *    SELECT  should  be  defined  if  we  can  do  a select() on the    *
  737. ***************
  738. *** 70,76 ****
  739.    *    drivers are streams modules.                    *
  740.    ************************************************************************/
  741.   # undef        SELECT
  742. ! /*# define    SELECT*/
  743.   
  744.   /************************************************************************
  745.    *    CRISP  defines  a typedef called u_char. Some Unix systems also    *
  746. --- 70,76 ----
  747.    *    drivers are streams modules.                    *
  748.    ************************************************************************/
  749.   # undef        SELECT
  750. ! # define    SELECT
  751.   
  752.   /************************************************************************
  753.    *    CRISP  defines  a typedef called u_char. Some Unix systems also    *
  754. ***************
  755. *** 81,86 ****
  756.    ************************************************************************/
  757.   #undef        U_CHAR
  758.   /*# define        U_CHAR*/
  759. --- 81,83 ----
  760. diff -c -r +new-files ../cr.orig/math.c ./math.c
  761. *** ../cr.orig/math.c    Wed Mar 27 23:10:31 1991
  762. --- ./math.c    Wed Mar 27 16:17:58 1991
  763. ***************
  764. *** 320,339 ****
  765.       return 0;
  766.   }
  767.   compress()
  768. ! {    register char    *cp;
  769. !     register char    *cp1;
  770. !     strl_acc_assign(get_str(1));
  771. !     cp = saccumulator;
  772.       while (*cp) {
  773. !         for (cp1 = cp; isspace(*cp1) || *cp1 == '\n'; )
  774. !             cp1++;
  775. !         if (*cp1 != *cp) {
  776. !             strcpy(cp+1, cp1);
  777. !             *cp = ' ';
  778.               }
  779. -         cp++;
  780.           }
  781.       return 0;
  782.   }
  783.   trim()
  784.   {    register char *cp;
  785. --- 320,366 ----
  786.       return 0;
  787.   }
  788.   compress()
  789. ! {
  790. ! /* start kew */
  791. !     /*
  792. !      * New compress can be called like (compress line "!.?:") and will
  793. !      * add two spaces after each of the characters in the follow_set.
  794. !      * If the follow_set is NULL or not passed, then compress will act
  795. !      * just like the old one; this preserves backward compatibility.
  796. !      */
  797. !     char *cp;
  798. !     char *sacc;
  799. !     char *s1;
  800. !     char *follow_set = (argv[2].l_flags == F_STR) ? argv[2].l_str : NULL;
  801. !     int got_follow;
  802. !     cp = get_str(1);
  803. !     sacc = (char *) chk_alloc(strlen(cp) * 2 + 1);    /* plenty of room for expansion */
  804. !     s1 = sacc;
  805.       while (*cp) {
  806. !         if (!isspace(*cp) && *cp != '\n') {
  807. !             *s1++ = *cp;    /* copy over the character */
  808. !             if (follow_set && strchr(follow_set, *cp) && isspace(*(cp + 1)))
  809. !                 got_follow = 1;
  810. !             else
  811. !                 got_follow = 0;
  812. !             cp++;
  813. !         } else {
  814. !             /* character must be whitespace */
  815. !             while (isspace(*cp) || *cp == '\n')
  816. !                 cp++;
  817. !             *s1++ = ' ';
  818. !             if (got_follow) {
  819. !                 *s1++ = ' ';
  820. !                 got_follow = 0;
  821.               }
  822.           }
  823. +     }
  824. +     *s1 = '\0';
  825. +     strl_acc_assign(sacc);
  826. +     chk_free(sacc);
  827.       return 0;
  828. + /* end kew */
  829.   }
  830.   trim()
  831.   {    register char *cp;
  832. diff -c -r +new-files ../cr.orig/pty.c ./pty.c
  833. *** ../cr.orig/pty.c    Wed Mar 27 23:10:33 1991
  834. --- ./pty.c    Wed Mar 27 16:24:48 1991
  835. ***************
  836. *** 19,35 ****
  837.   #     include    <termio.h>
  838.   # endif
  839.   # include    "clk.h"
  840.   SCCSID("@(#) pty.c 1.15, (C) P. Fox");
  841. - extern    BYTE    *blanks;
  842.   
  843.   # define    BOLD    0x01
  844.   # define    REVERSE    0x02
  845.   
  846.   # define    POLL_TIME    1    /* Seconds between polls.    */
  847. - # define    BIT(x)    (1 << (x))
  848.   
  849.   static int entry = 0;
  850. ! extern long    sel_bits;
  851.   static char *flush_pty_buf();
  852.   static void p_update();
  853.   void    p_clear_screen();
  854. --- 19,46 ----
  855.   #     include    <termio.h>
  856.   # endif
  857.   # include    "clk.h"
  858. + /* start kew */
  859. + #ifdef SELECT
  860. + #  if !(defined(BSD) || defined(SUN))    /* BSD/Sun puts timeval struct in times.h -- 27Mar91 kew */
  861. + #    include    <sys/select.h>
  862. + #  endif
  863. + #endif
  864. + #include    <sys/types.h>
  865. + #include     <sys/times.h>
  866. + #include    <time.h>
  867. + /* end kew */
  868.   SCCSID("@(#) pty.c 1.15, (C) P. Fox");
  869.   
  870.   # define    BOLD    0x01
  871.   # define    REVERSE    0x02
  872.   
  873.   # define    POLL_TIME    1    /* Seconds between polls.    */
  874.   
  875. + extern    BYTE    *blanks;
  876. + extern    int    wait_status;                    /* kew */
  877.   static int entry = 0;
  878. ! extern fd_set    sel_bits;                    /* kew */
  879.   static char *flush_pty_buf();
  880.   static void p_update();
  881.   void    p_clear_screen();
  882. ***************
  883. *** 198,203 ****
  884. --- 209,215 ----
  885.       if (str_arg && (prog = regcomp(str_arg)) == NULL)
  886.           goto end_of_function;
  887.   
  888. +     wait_status = 0;                    /* kew */
  889.       while (clock_check()) {
  890.           int    n;
  891.           LIST    *lp1;
  892. ***************
  893. *** 215,229 ****
  894.           /*   portably. Hopefully the window is too
  895.           /*   small to cause a problem.
  896.           /*----------------------------------------*/
  897. !         if (child_sig)
  898. !             i = -1;
  899. !         else {
  900. !             fcntl(fd, F_SETFL, flags & ~O_NDELAY);
  901. !             if (child_sig)
  902. !                 i = -1;
  903. !             i = read(fd, buf, 1);
  904. !             fcntl(fd, F_SETFL, flags);
  905. !             }
  906.           if (i != 1) {
  907.               update();
  908.               if (check_if_died(curbp)) {
  909. --- 227,239 ----
  910.           /*   portably. Hopefully the window is too
  911.           /*   small to cause a problem.
  912.           /*----------------------------------------*/
  913. !         if (check_if_died(curbp)) {            /* kew */
  914. !             break;                    /* kew */
  915. !         } else {                    /* kew */
  916. !             if (child_sig && check_if_died(curbp))  /* kew */
  917. !                 break;                /* kew */
  918. !             i = read(fd, buf, 1);            /* kew */
  919. !         }                        /* kew */
  920.           if (i != 1) {
  921.               update();
  922.               if (check_if_died(curbp)) {
  923. ***************
  924. *** 616,622 ****
  925.       strcpy(tty_name, TTY_NAME);
  926.       for (xx = 0; pty_name[xx] != 'X'; )
  927.           xx++;
  928. !     for (c1 = 'q'; c1 != 'z'; c1++) {
  929.           for (c2 = 0; c2 < 0x10; c2++) {
  930.               tty_name[xx] = pty_name[xx] = c1;
  931.               tty_name[xx+1] = pty_name[xx+1] = 
  932. --- 626,632 ----
  933.       strcpy(tty_name, TTY_NAME);
  934.       for (xx = 0; pty_name[xx] != 'X'; )
  935.           xx++;
  936. !     for (c1 = 'p'; c1 != 'z'; c1++) {            /* kew */
  937.           for (c2 = 0; c2 < 0x10; c2++) {
  938.               tty_name[xx] = pty_name[xx] = c1;
  939.               tty_name[xx+1] = pty_name[xx+1] = 
  940. ***************
  941. *** 648,662 ****
  942. --- 658,685 ----
  943.           dup2(*recv, 2);
  944.           close(*recv);
  945.           close(*send);
  946. + #ifdef SIGTTIN                            /* kew */
  947.           signal(SIGTTIN, SIG_DFL);
  948.           signal(SIGTTOU, SIG_DFL);
  949.           setpgrp(0, mypid);
  950.           ioctl(0, TIOCSPGRP, &mypid);
  951. + #else                            /* start kew */
  952. +         {
  953. +         struct termio ot, nt;
  954. +         ioctl(0, TCGETA, &ot);
  955. +         nt = ot;
  956. +         nt.c_cc[VMIN] = 1;    /* one character read is OK     */
  957. +         nt.c_cc[VTIME] = 0;    /* Never time out.              */
  958. +         ioctl(0, TCSETAW, &nt);
  959. +         }
  960. + #endif                            /* end kew */
  961.           }
  962.       else {
  963.           *recv = *send;
  964. + #ifdef SIGTTIN
  965.           signal(SIGTTIN, SIG_IGN);
  966.           signal(SIGTTOU, SIG_IGN);
  967. + #endif
  968.           }
  969.   # endif
  970.   
  971. ***************
  972. *** 730,736 ****
  973.       curbp->b_display = dp;
  974.       infof("Buffer connected.");
  975.       num_pty++;
  976. !     sel_bits |= BIT(dp->d_pipe_in);
  977.       p_poll();
  978.       return 0;
  979.   }
  980. --- 753,759 ----
  981.       curbp->b_display = dp;
  982.       infof("Buffer connected.");
  983.       num_pty++;
  984. !     FD_SET(dp->d_pipe_in, &sel_bits);            /* kew */
  985.       p_poll();
  986.       return 0;
  987.   }
  988. ***************
  989. *** 741,747 ****
  990.       DISPLAY *dp = bp->b_display;
  991.       if (dp == NULL)
  992.           return;
  993. !     sel_bits &= ~BIT(dp->d_pipe_in);
  994.       close(dp->d_pipe_in);
  995.       close(dp->d_pipe_out);
  996.       if (dp->d_pid) {
  997. --- 764,770 ----
  998.       DISPLAY *dp = bp->b_display;
  999.       if (dp == NULL)
  1000.           return;
  1001. !     FD_CLR(dp->d_pipe_in, &sel_bits);            /* kew */
  1002.       close(dp->d_pipe_in);
  1003.       close(dp->d_pipe_out);
  1004.       if (dp->d_pid) {
  1005. ***************
  1006. *** 810,824 ****
  1007.   }
  1008.   check_if_died(bp)
  1009.   register BUFFER *bp;
  1010. ! {    extern int child_sig;
  1011. !     if (child_sig)
  1012.           proc_wait(-1);
  1013.       if (kill(bp->b_display->d_pid, 0) < 0) {
  1014.           p_cleanup(bp);
  1015.           return TRUE;
  1016. !         }
  1017.       return FALSE;
  1018.   }
  1019.   p_write(buf, len)
  1020.   char    *buf;
  1021. --- 833,862 ----
  1022.   }
  1023.   check_if_died(bp)
  1024.   register BUFFER *bp;
  1025. ! {
  1026. ! /* start kew */
  1027. !     extern int child_sig;
  1028. !     int fd = bp->b_display->d_pipe_in;
  1029. !     int i;
  1030. !     char bigbuf[256];
  1031. !     if (child_sig) {
  1032. !         do {
  1033. !             i = read(fd, bigbuf, 255);
  1034. !             if (i > 0) {
  1035. !                 bigbuf[i] = 0;
  1036. !                 p_update(bp, bigbuf);
  1037. !             }
  1038. !         } while (i > 0);
  1039.           proc_wait(-1);
  1040. +     }
  1041. +     bp->b_wstat = wait_status;
  1042.       if (kill(bp->b_display->d_pid, 0) < 0) {
  1043.           p_cleanup(bp);
  1044.           return TRUE;
  1045. !     }
  1046.       return FALSE;
  1047. + /* end kew */
  1048.   }
  1049.   p_write(buf, len)
  1050.   char    *buf;
  1051. diff -c -r +new-files ../cr.orig/s-xenix ./s-xenix
  1052. *** ../cr.orig/s-xenix    Wed Mar 27 23:10:58 1991
  1053. --- ./s-xenix    Thu Mar 28 08:11:20 1991
  1054. ***************
  1055. *** 8,11 ****
  1056.   # 286 CFLAGS).
  1057.   #
  1058.   SHLIB=
  1059. ! export SHLIB
  1060. --- 8,13 ----
  1061.   # 286 CFLAGS).
  1062.   #
  1063.   SHLIB=
  1064. ! OTHERLIBS="-ldir"
  1065. ! G="-O"
  1066. ! export SHLIB OTHERLIBS G
  1067. diff -c -r +new-files ../cr.orig/spawn.c ./spawn.c
  1068. *** ../cr.orig/spawn.c    Wed Mar 27 23:10:42 1991
  1069. --- ./spawn.c    Wed Mar 27 16:21:30 1991
  1070. ***************
  1071. *** 25,30 ****
  1072. --- 25,31 ----
  1073.       } PROC;
  1074.   Head_p    hd_procs;
  1075.   int    child_sig = FALSE;    /* Set to TRUE when SIGCLD goes off. */
  1076. + int    wait_status;                        /* kew */
  1077.   
  1078.   void
  1079.   proc_add(pid, macro)
  1080. ***************
  1081. *** 65,70 ****
  1082. --- 66,72 ----
  1083.       while (1) {
  1084.           while (1) {
  1085.               dead_proc = wait(&status);
  1086. +             wait_status = (status >> 8);        /* kew */
  1087.   # if    defined(SIGCLD)
  1088.                      signal(SIGCLD, child_handler);
  1089.   # endif
  1090. ***************
  1091. *** 110,116 ****
  1092.           if (shname == NULL)
  1093.               shname = ggetenv("shell");
  1094.           if (shname == NULL)
  1095. !             shname = "/bin/csh";     
  1096.           }
  1097.       return shname;
  1098.   }
  1099. --- 112,118 ----
  1100.           if (shname == NULL)
  1101.               shname = ggetenv("shell");
  1102.           if (shname == NULL)
  1103. !             shname = "/bin/sh";             /* kew */
  1104.           }
  1105.       return shname;
  1106.   }
  1107. diff -c -r +new-files ../cr.orig/splay/sptree.h ./splay/sptree.h
  1108. *** ../cr.orig/splay/sptree.h    Wed Mar 27 23:08:44 1991
  1109. --- ./splay/sptree.h    Wed Mar 27 22:27:38 1991
  1110. ***************
  1111. *** 20,26 ****
  1112.   
  1113.   typedef struct _spblk SPBLK;
  1114.   
  1115. ! typedef struct _spblk
  1116.   {
  1117.       SPBLK    * leftlink;
  1118.       SPBLK    * rightlink;
  1119. --- 20,26 ----
  1120.   
  1121.   typedef struct _spblk SPBLK;
  1122.   
  1123. ! /*typedef*/ struct _spblk
  1124.   {
  1125.       SPBLK    * leftlink;
  1126.       SPBLK    * rightlink;
  1127. diff -c -r +new-files ../cr.orig/src/crisp/GNUmakefile ./src/crisp/GNUmakefile
  1128. *** ../cr.orig/src/crisp/GNUmakefile
  1129. --- ./src/crisp/GNUmakefile    Wed Mar 27 21:02:06 1991
  1130. ***************
  1131. *** 0 ****
  1132. --- 1,110 ----
  1133. + #
  1134. + # GNU-Makefile for macros
  1135. + #
  1136. + MACDIR    = /usr/local/crisp/macros
  1137. + H    = crisp.h tty/tty.h
  1138. + VANILLA    = Makefile
  1139. + vpath    :tty:kbd
  1140. + CM    = \
  1141. +     abbrev.cm \
  1142. +     ansi.cm \
  1143. +     ascii.cm \
  1144. +     autosave.cm \
  1145. +     box.cm \
  1146. +     brace.cm \
  1147. +     calc.cm \
  1148. +     cbox.cm \
  1149. +     column.cm \
  1150. +     compile.cm \
  1151. +     copyr.cm \
  1152. +     core.cm \
  1153. +     crisp.cm \
  1154. +     crisprc.cm \
  1155. +     dial.cm \
  1156. +     edt.cm \
  1157. +     features.cm \
  1158. +     g_macros.cm \
  1159. +     g_vi.cm \
  1160. +     hanoi.cm \
  1161. +     help.cm \
  1162. +     history.cm \
  1163. +     kbd/pc.cm \
  1164. +     kbd/sun3.cm \
  1165. +     kbd/xcrisp.cm \
  1166. +     kbd/xterm.cm \
  1167. +     kbd_help.cm \
  1168. +     mail.cm \
  1169. +     makeman.cm \
  1170. +     misc.cm \
  1171. +     modelines.cm \
  1172. +     options.cm \
  1173. +     ralign.cm \
  1174. +     rcs.cm \
  1175. +     region.cm \
  1176. +     regress.cm \
  1177. +     sccs.cm \
  1178. +     sdb.cm \
  1179. +     search.cm \
  1180. +     select.cm \
  1181. +     shell.cm \
  1182. +     startup.cm \
  1183. +     stest.cm \
  1184. +     tags.cm \
  1185. +     telnet.cm \
  1186. +     text.cm \
  1187. +     tty.cm \
  1188. +     tty/aixterm.cm \
  1189. +     tty/at386.cm \
  1190. +     tty/att.cm \
  1191. +     tty/dec.cm \
  1192. +     tty/ibm5081.cm \
  1193. +     tty/isc.cm \
  1194. +     tty/sco.cm \
  1195. +     tty/sun.cm \
  1196. +     tty/sun4.cm \
  1197. +     tty/telnet.cm \
  1198. +     tty/tty.cm \
  1199. +     tty/tvi965.cm \
  1200. +     tty/vt100.cm \
  1201. +     tty/vt220.cm \
  1202. +     tty/wyse50.cm \
  1203. +     tty/wyse60.cm \
  1204. +     tty/xcrisp.cm \
  1205. +     tty/xenix.cm \
  1206. +     tty/xterm.cm \
  1207. +     unix.cm \
  1208. +     welcome.cm \
  1209. +     window.cm \
  1210. +     wp.cm \
  1211. +     zoom.cm
  1212. + all:    $(addprefix $(MACDIR)/, $(CM))
  1213. + $(addprefix $(MACDIR)/, $(CM)): $(MACDIR)/%.cm : %.m $(H)
  1214. +     cm -o $@ $<
  1215. + $(VANILLA)::
  1216. +     @rm -f $(VANILLA)
  1217. +     @echo "#\n# Plain Vanilla $(VANILLA) for Crisp Macros\n#" >> $(VANILLA)
  1218. +     @echo "# This file generated by GNU Make with GNUmakefile" >> $(VANILLA)
  1219. +     @echo "# If you don't use GNU make, you should think about changing." >> $(VANILLA)
  1220. +     @echo "# Date produced: `date`" >> $(VANILLA)
  1221. +     @echo "#\n" >> $(VANILLA)
  1222. +     @echo "SHELL = /bin/sh" >> $(VANILLA)
  1223. +     @echo "MACDIR = $(MACDIR)" >> $(VANILLA)
  1224. +     @echo "H = $(H)" >> $(VANILLA)
  1225. +     @echo "CM = \c" >> $(VANILLA)
  1226. +     @echo "$(CM)" \
  1227. +         | awk '{for (i = 1; i < NF; i++) printf("\t$$(MACDIR)/%s\\\n", $$i);\
  1228. +             printf("\t$$(MACDIR)/%s\n", $$NF)}' >> $(VANILLA)
  1229. +     @echo "\n\nall: $$(CM)" >> $(VANILLA)
  1230. +     @echo "\n" >> $(VANILLA)
  1231. +     @echo "$(basename $(CM))" \
  1232. +         | awk '{for (i = 1; i <= NF; i++) { \
  1233. +             printf("$$(MACDIR)/%s.cm: $$(H) %s.m\n", $$i, $$i); \
  1234. +             printf("\tcm -o $$(MACDIR)/%s.cm %s.m\n", $$i, $$i);}}' >> $(VANILLA)
  1235. +     @echo "vanilla $(VANILLA) completed"
  1236. diff -c -r +new-files ../cr.orig/src/crisp/Makefile ./src/crisp/Makefile
  1237. *** ../cr.orig/src/crisp/Makefile    Wed Mar 27 23:09:05 1991
  1238. --- ./src/crisp/Makefile    Wed Mar 27 21:02:14 1991
  1239. ***************
  1240. *** 1,65 ****
  1241. ! MACDIR    = /usr/local/crisp/macros
  1242. ! H    = crisp.h tty/tty.h
  1243. ! SRC    = Makefile *.h *.m kbd/* tty/*
  1244. ! CM    =    $(MACDIR)/abbrev.cm \
  1245. !         $(MACDIR)/ansi.cm \
  1246. !         $(MACDIR)/ascii.cm \
  1247. !         $(MACDIR)/autosave.cm \
  1248. !         $(MACDIR)/box.cm \
  1249. !         $(MACDIR)/brace.cm \
  1250. !         $(MACDIR)/calc.cm \
  1251. !         $(MACDIR)/compile.cm \
  1252. !         $(MACDIR)/copyr.cm \
  1253. !         $(MACDIR)/core.cm \
  1254. !         $(MACDIR)/crisp.ó┐û∙ÇIQ@q└ â└!SP⌠à±Ç@ â└S â└b â└H`ò@`ò@4σ░äæLªφ%╩Θth┼9H@ïdΩmÉPTî$ß└╠±ö\à0
  1255. mÉ╫X≡hU8UMR-ÉKσ ≤àhàHÉeXMÜA"@IöMQ5Æ0PS┼8@<╘L⌡R T╬4ö├5!LAD╨I0▒NRU8UUSÄCÇ